如何渗透测试wordpress网站
通过信息收集,发现目标站点的用户名,利用username去尝试暴力破解,登录目标站点的后台。
第1步 信息收集
首先,准备工作,依次执行命令
# cd /home/ichunqiu/
# wget http://file.ichunqiu.com/453rgtfk/tools.zip
# unzip tools.zip
将实验文件下载并解压至/home/ichunqiu/目录下
然后将data.zip(wpscan的离线更新包)移动至/usr/share/wpscan/目录下,并解压(选择A覆盖原本的文件)
# mv data.zip /usr/share/wpscan/
# unzip data.zip
针对WordPress站点,我们可以收集如下信息:
识别指纹
WordPress默认安装情况下,根目录会留有开发人员编写的readme.html文件,通过访问该文件,我们可以大概的知道站点的WordPress版本号。
打开浏览器,访问http://172.16.12.2:8080/readme.html
可知版本号为4.3
如果管理删除了该文件,我们该如何判断呢?
WPscan是一款针对WordPress的漏洞扫描工具,其指纹识别功能不仅能够获取WordPress的版本号,还能识别其插件的版本号
WPscan维护着一份漏洞信息库,我们首先需要更新漏洞数据信息,我们采用离线的方式更新漏洞信息库。
首先将下载最新的数据包(实验文件内的data.zip),将其复制到/usr/share/wpscan/目录下,使用unzip data.zip将其解压(请覆盖原本的数据)
使用如下命令开始扫描:
wpscan --url http://172.16.12.2:8080/
wpscan运行的时候会提示更新,默认N放弃在线更新
我们可以获取以下信息
- WordPress 版本号:4.3.1
- 插件版本号
- CVE信息
此处我们获取了目标服务器的版本信息、WordPress版本号、以及对应CVE漏洞信息等。
wp-admin登录尝试
/wp-admin/是WordPress的默认管理员目录,打开http://172.16.12.2:8080/wp-admin,页面自动跳转至登录页面。 我们随机输入一个username 和 password 尝试登录一下。
可以看见出现报错:无效的用户名 (Invalid username),所以我们需要先获取用户名。
用户枚举
?author=1 遍历用户名 默认安装的WordPress 站点是能够遍历用户名的,使用浏览器访问http://172.16.12.2:8080/?author=1
页面自动跳转至author为1的用户页面,获取了一个用户名。
我们再输入已存在的用户名zhangsan,密码任意
会提示密码无效
通过两次不同的返回信息,我们可以看出,目标后台确实存在一个zhangsan的用户。
当?author=1遍历用户名不好使得时候可以采用这种方法
若管理员修改了默认目录路径,则需要通过目录爆破等方式查找后台地址
我们已经有了用户名和后台路径,自然会想到后台暴力破解。
第2步 暴力破解
WordPress爆破事实上有两种,第一种是使用工具或脚本对登录页面进行登录尝试,第二种是利用xmlrpc接口,POST登录数据信息,来判断账户密码是否可用
WPscan爆破
WPscan包含WordPress黑盒测试所需的各种功能,上面我们已经使用了WPscan的扫描功能了。接下来,来使用其爆破功能。
使用wpscan -h 获取帮助
我们输入如下命令开始爆破:
wpscan --url http://172.16.12.2:8080/ --wordlist /home/ichunqiu/wordbrutepress/password.lst --username zhangsan
成功爆破密码qwer1234
爆破是否成功很大取决于字典是否强大,从另一方面来说,我们设置密码时要足够强
XMLRPC爆破
xmlrpc 是 WordPress 中进行远程调用的接口,低版本中曾曝出可利用 xmlrpc 调用接口中的 system.multicall提高爆破效率,通过 xmlrpc可以将多个密码组合在一次请求中提交,可以减少请求次数,从而规避日志的监测。
该接口只允许POST提交请求,我们大概看看包内容
请求头中包含了登录信息
由上面的WPscan扫描结果可知目标站点存在该接口,而3.4.1 这个版本在影响范文之内的 我们使用工具开始爆破
命令行切换到下载的工具目录,
执行命令如下:
python WordBrutepress.py -X -t http://172.16.12.2:8080/ -u zhangsan -w /home/ichunqiu/wordbrutepress/password.lst
执行结果:
使用获取的密码成功登陆后台